home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / getpass.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  3KB  |  114 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import sys
  5. __all__ = [
  6.     'getpass',
  7.     'getuser']
  8.  
  9. def unix_getpass(prompt = 'Password: ', stream = None):
  10.     if stream is None:
  11.         stream = sys.stdout
  12.     
  13.     
  14.     try:
  15.         fd = sys.stdin.fileno()
  16.     except:
  17.         return default_getpass(prompt)
  18.  
  19.     old = termios.tcgetattr(fd)
  20.     new = old[:]
  21.     new[3] = new[3] & ~(termios.ECHO)
  22.     
  23.     try:
  24.         termios.tcsetattr(fd, termios.TCSADRAIN, new)
  25.         passwd = _raw_input(prompt, stream)
  26.     finally:
  27.         termios.tcsetattr(fd, termios.TCSADRAIN, old)
  28.  
  29.     stream.write('\n')
  30.     return passwd
  31.  
  32.  
  33. def win_getpass(prompt = 'Password: ', stream = None):
  34.     if sys.stdin is not sys.__stdin__:
  35.         return default_getpass(prompt, stream)
  36.     
  37.     import msvcrt as msvcrt
  38.     for c in prompt:
  39.         msvcrt.putch(c)
  40.     
  41.     pw = ''
  42.     while None:
  43.         c = msvcrt.getch()
  44.         if c == '\r' or c == '\n':
  45.             break
  46.         
  47.         if c == '\x03':
  48.             raise KeyboardInterrupt
  49.         
  50.         if c == '\x08':
  51.             pw = pw[:-1]
  52.             continue
  53.         pw = pw + c
  54.         continue
  55.         msvcrt.putch('\r')
  56.         msvcrt.putch('\n')
  57.         return pw
  58.  
  59.  
  60. def default_getpass(prompt = 'Password: ', stream = None):
  61.     print >>sys.stderr, 'Warning: Problem with getpass. Passwords may be echoed.'
  62.     return _raw_input(prompt, stream)
  63.  
  64.  
  65. def _raw_input(prompt = '', stream = None):
  66.     if stream is None:
  67.         stream = sys.stdout
  68.     
  69.     prompt = str(prompt)
  70.     if prompt:
  71.         stream.write(prompt)
  72.     
  73.     line = sys.stdin.readline()
  74.     if not line:
  75.         raise EOFError
  76.     
  77.     if line[-1] == '\n':
  78.         line = line[:-1]
  79.     
  80.     return line
  81.  
  82.  
  83. def getuser():
  84.     import os as os
  85.     for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
  86.         user = os.environ.get(name)
  87.         if user:
  88.             return user
  89.             continue
  90.     
  91.     import pwd as pwd
  92.     return pwd.getpwuid(os.getuid())[0]
  93.  
  94.  
  95. try:
  96.     import termios
  97.     (termios.tcgetattr, termios.tcsetattr)
  98. except (ImportError, AttributeError):
  99.     
  100.     try:
  101.         import msvcrt
  102.     except ImportError:
  103.         
  104.         try:
  105.             from EasyDialogs import AskPassword
  106.         except ImportError:
  107.             getpass = default_getpass
  108.  
  109.         getpass = AskPassword
  110.  
  111.     getpass = win_getpass
  112.  
  113. getpass = unix_getpass
  114.